<?if(!defined("PROLOG_INCLUDED") || PROLOG_INCLUDED!==true)die();?>
<?
/**
 * ЯДРО СИСТЕМЫ
 */
if (!defined('DEBUG_MODE')) {
	define("DEBUG_MODE", true);
}

/* Определение констант */
define("USR_PATH", $_SERVER["DOCUMENT_ROOT"]."/system/config/");
define("CORE_PATH", $_SERVER["DOCUMENT_ROOT"]."/system/core/");
define("COMPONENT_PATH", $_SERVER["DOCUMENT_ROOT"]."/system/components/");
define("MODULE_PATH", $_SERVER["DOCUMENT_ROOT"]."/system/modules/");
define("CACHE_PATH", $_SERVER["DOCUMENT_ROOT"]."/system/cache/");
define("UPLOAD_PATH", $_SERVER["DOCUMENT_ROOT"]."/upload/");
define("LIB_PATH", $_SERVER["DOCUMENT_ROOT"]."/system/lib/");
define("CLASS_PATH", LIB_PATH . "class/");
define("FUNC_PATH", LIB_PATH . "func/");

// Определители переменных шаблона
define("TV_PREPEND", "{");
define("TV_APPEND", "}");

//Debug
//require_once CORE_PATH . "debug.php";

require_once USR_PATH . "config.php";
define("TPL_PATH", $_SERVER["DOCUMENT_ROOT"]."/system/templates/" . CURRENT_TPL . "/");
define("TPL_URL", "/system/templates/" . CURRENT_TPL . "/");

// Определение языка сайта
define("SYSTEM_LANG_PATH", USR_PATH."lang/");
require_once CLASS_PATH . "lang.class.php";
getLangFiles(SYSTEM_LANG_PATH.LANG_ID.'/');


define("PHP_MAGIC_QUOTES_ACTIVE", get_magic_quotes_gpc());
define("PHP_REAL_ESCAPE_STRING_EXISTS", function_exists( "mysql_real_escape_string"));


/**
* Массив для модификации содержимого страницы.
* Пример использования - для фильтра матов, подсветки синтаксиса и т.д.
*/
$arTV = Array();

/**
* $streamBefore - Поток данных до обработки
* $streamAfter - Поток данных после обработки
* 
* define(FINISH_STREAM, "N")
*/
$streamBefore = '';
$streamAfter = '';

/**
* Подключение главного системного класса
*/
require_once CLASS_PATH . "event.class.php";
require_once FUNC_PATH . "system.func.php";
require_once CLASS_PATH . "system.class.php";
require_once CLASS_PATH . "component.class.php";
require_once CLASS_PATH . "cache.class.php";
require_once CLASS_PATH . "file.class.php";
require_once CLASS_PATH . "mail.class.php";
require_once CLASS_PATH . "parser.class.php";

// Панель
require_once USR_PATH . "panel.php";

/**
 * Подключение БД
 */

require_once CLASS_PATH . "db.class.php";


/**
* TODO: Временно тут, потом сделать черпание из файлов
*/
global $_CONFIG;
$arMeta = Array(
            "TITLE" => $_CONFIG["SITE_NAME"],
            "DESCRIPTION" => $_CONFIG["SITE_DESCRIPTION"],
            );

$DB = new DB;

$SYS = new System;

require_once CLASS_PATH . "paginator.class.php";

/**
 * Сессии пользователей
 */
session_name("SACID_SESSION_ID");
session_start();

if (!isset($_SESSION['WEB_SERFER'])) {
	$_SESSION['WEB_SERFER'] = Array(
		"IP" => $_SERVER["REMOTE_ADDR"],
		"BROWSER" => $_SERVER["HTTP_USER_AGENT"],
		"WEB_ID" => md5(GetRandom(8).$_SERVER["REMOTE_ADDR"]),
	);
}
$_SESSION['WEB_SERFER']["LAST_ACTIVITY"] = time();

/**
 * Создаём пользователя
 */
require_once CLASS_PATH.'user.class.php';
$USER = new User();

if (!defined('DISPLAY_MODE')) {
	if ($_GET['MODE'] == 'EDIT' AND $USER->IsAdmin()) {
		define("DISPLAY_MODE", 'EDIT');
	}
}

// Проверяем права пользователя на доступ к данной папке
require_once CLASS_PATH . "access.class.php";
$bAccessPath = Permitions::CheckPathPerms(getCurDir());
define("ACCESS_PATH", $bAccessPath);

/**
 * UI
 */
require_once CLASS_PATH.'/face.class.php';
/**
* Изменение потока вывода
* 
* @param stream $stream
* @return stream
*/
function Templater($stream) {
    global $arMeta, $arTV, $streamBefore, $streamAfter;
    $streamBefore = $stream;

    // Парсинг META
    foreach($arMeta as $key => $value) {
        $stream = str_replace(TV_PREPEND.$key.TV_APPEND, $value, $stream);
    }
    // Парсинг TV
    foreach($arTV as $key => $value) {
        $stream = str_replace($key, $value, $stream);
    }

    $streamAfter = $stream;
    return $stream;
}           
?>